/******************************************************************************
 * Copyright (C) 2011 ShenZhen ComTop Information Technology Co.,Ltd
 * All Rights Reserved.
 * 本软件为深圳康拓普开发研制。未经本公司正式书面同意，其他任何个人、团体不得使用、
 * 复制、修改或发布本软件.
 *****************************************************************************/

package com.code.common.logback;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;

/**
 * @author 周振兴
 * @since 1.0
 * @version 2011-2-28 周振兴
 */
public abstract class AbstractBsonAppender extends AppenderBase<ILoggingEvent> {
    
    /***/
    private ILoggingEventBsonifier bsonifier;
    
    /**
     * 构造函数
     */
    public AbstractBsonAppender() {
        super();
        bsonifier = new LoggingEventBsonifierImpl();
    }
    
    @Override
    protected void append(ILoggingEvent loggingEvent) {
        LoggingEventVO objLoggingEventVO = bsonifier.bsonify(loggingEvent);
        append(objLoggingEventVO);
    }
    
    /**
     * @return 获取 bsonifier属性值
     */
    public ILoggingEventBsonifier getBsonifier() {
        return bsonifier;
    }
    
    /**
     * @param bsonifier 设置 bsonifier 属性值为参数值 bsonifier
     */
    public void setBsonifier(ILoggingEventBsonifier bsonifier) {
        this.bsonifier = bsonifier;
    }
    
    /**
     * @param loggingEventVO 日志记录事件实体对象
     */
    protected abstract void append(LoggingEventVO loggingEventVO);
}